Compressing and decompressing image data using compacted region transforms

ABSTRACT

There is a method of compressing image data comprising a set of image values each representing a position in image-value space so as to define an occupied region thereof. The method comprises selectively applying a series of compression transforms to subsets of the image data items to generate a transformed set of image data items occupying a compacted region of value space. The method further comprises identifying a set of one or more reference data items that quantizes the compacted region in value space. For each image data item in the set of image data items, a sequence of decompression transforms from a fixed set of decompression transforms is identified that generates an approximation of that image data item when applied to a selected one of the one or more reference data items. Each image data item in the set of image data items is encoded as a representation of the identified sequence of decompression transforms for that image data item. The encoded image data items, set of reference data items and the fixed set of decompression transforms are stored as compressed image data.

BACKGROUND

The present disclosure relates to compressing and decompressing imagedata. Some aspects relate in particular to the compression anddecompression of colour data associated with blocks of one or morepixels and/or texels of the type that may be used as part of computergraphics systems.

There are many circumstances where it may be desirable to compress imagedata in order to reduce the amount of required storage, or memory,space. Computer graphics is one field where it may be desirable toreduce the amount of storage for image data. In computer graphicssystems, each colour (e.g. the colour of a pixel, or block of one ormore pixels) may comprise one or more components, e.g. red, green andblue (known collectively as RGB) and alpha (α), where alpha represents atransparency or blending component used when a colour is to be overlaidon an existing colour. Other colour components may also be specifiedsuch as YUV (where Y represents luma and U and V each representchrominance components). Each stored colour may use a number of bits(e.g. 8 bits) for each colour component. The number of bits per colourcomponent can be increased or decreased for greater or lesser colourresolution.

One approach to compress colour data for an image is to encode the datafor that image in some way so that the encoding is stored rather thanthe complete set of colour values for the image. One way to encode thecolour data is to use vector quantisation. Vector quantization isgenerally directed to the idea of representing an input value space(e.g. a colour space) as a discrete output space. In practice, the inputspace is likely to also be discretised, but at a finer resolution thanthe output space. The vectors that represent this discretised outputspace may be referred to as codevectors, or codewords. The set ofcodevectors may be stored in a codebook that may be index-referenced.Although vector quantization can be used to represent a colour spacewell, the codebook can in certain circumstances become very large,limiting the effectiveness of vector quantization as a way ofcompressing image data.

Another approach to encode colour data for an image is to apply acolour-space conversion. Here, a colour space spanned by the image datamay be converted to a different colour space. One example of a colourspace conversion is the conversion from RGB space to YUV space, forexample YCbCr, where Y represents the luma, Cb represents the bluecomponent minus the luma, and Cr represents the red component minus theluma. The converted space is typically assumed to be an N-dimensionalrectangular prism (with the number of dimensions N being equal to thenumber of colour components). However a problem with this approach isthat certain encodings may produce values that are outside of the rangeof the space once those encodings have been converted.

BRIEF SUMMARY

According to a first aspect of the present disclosure there is provideda method of compressing image data comprising a set of image data itemseach specifying a position in image-value space so as to define anoccupied region thereof, the method comprising: selectively applying aseries of compression transforms to subsets of the image data items togenerate a transformed set of image data items occupying a compactedregion of value space; identifying a set of one or more reference dataitems that quantizes the compacted region in value space; identifyingfor each image data item in the set of image data items a sequence ofdecompression transforms from a fixed set of decompression transformsthat generates an approximation of that image data item when applied toa selected one of the one or more reference data items; encoding eachimage data item in the set of image data items as a representation ofthe identified sequence of decompression transforms for that image dataitem; and storing the encoded image data items, the set of one or morereference data items and the fixed set of decompression transforms ascompressed image data.

Each decompression transform in the fixed set of decompressiontransforms may reverse the effect of a corresponding compressiontransform in the series of compression transforms.

The sequence of decompression transforms identified for each image dataitem may reverse the compression transforms applied to that image dataitem to compact the occupied region of value space.

The method may further comprise: identifying data items representablewith the fixed set of decompression transforms and set of one or morereference data items; and identifying as the sequence of decompressiontransforms for each image data item the sequence of transforms used togenerate the representable data item that most closely matches thatimage data item.

For each of the encoded image data items, an indication of one of thereference data items from the set of one or more reference data itemswhich is to be used to decode the encoded image data item may be stored.

The fixed set of decompression transforms may be identified from theseries of compression transforms.

The fixed set of decompression transforms may be an ordered set oftransforms that when selectively applied to subsets of the transformedset of image data items reverses compaction of the occupied region ofvalue space caused by applying the series of compression transforms.

The image-value space may be a colour space and each image data item mayrepresent a position in the colour space. Each position in colour spacemay specify one or more colour values.

Each image data item in the set of image data items may be an n-tuplethat represents one or more colour values.

The image data may be texture data and each image data item in the setof image data items may represent one or more colour values associatedwith a respective block of one or more texels.

The set of reference data items may comprise a plurality of referencedata items each representing a position in the colour space.

The number of reference data items in the set of reference data itemsmay be less than the number of image data items in the set of image dataitems.

The set of reference data items may be stored in a number of bits lessthan the number of bits required for storing the set of image dataitems. Each encoded image data item may be stored in a number of bitsless than the number of bits required for storing the data item itencodes.

Each image data item in the set of image data items may correspond to atransformed image data item in the transformed set of image data items.

According to a second aspect of the present disclosure there is providedan image data compressor configured to compress image data comprising aset of image data items each representing a position in value space soas to define an occupied region thereof, the compressor comprising: acompression transform block configured to selectively apply a series ofcompression transforms to subsets of the image data items to generate atransformed set of image data items occupying a compacted region ofvalue space; a quantization unit configured to identify a set of one ormore reference data items that quantizes the compacted region in valuespace; an encoding block configured to, for each image data item in theset of image data items: identify a sequence of decompression transformsfrom a fixed set of decompression transforms that generates anapproximation of that image data item when applied to a selected one ofthe set of one or more reference data items; and encode the image dataitem as a representation of the identified sequence of decompressiontransforms for that image data item; and a memory configured to storethe encoded image data items, set of reference data items and the fixedset of decompression transforms as compressed image data.

Each decompression transform in the fixed set of decompressiontransforms may reverse the effect of a corresponding compressiontransform in the series of compression transforms.

The sequence of decompression transforms identified for each image dataitem may reverse the compression transforms applied to that image dataitem to compact the occupied region of value space.

The encoding block may be configured to: identify data itemsrepresentable with the fixed set of decompression transforms and set ofone or more reference data items; and identify as the sequence ofdecompression transforms for each image data item the sequence oftransforms used to generate the representable data item that mostclosely matches that image data item.

The memory may be further configured to store, for each of the encodedimage data items, an indication of one of the reference data items fromthe set of one or more reference data items which is to be used todecode the encoded image data item.

The compressor may further comprise a reversal transform blockconfigured to identify the fixed set of decompression transforms fromthe series of compression transforms.

The reversal transform block may be configured to identify as the fixedset of decompression transforms an ordered set of transforms that whenselectively applied to the transformed set of image data items reversescompaction of the occupied region of value space caused by applying theseries of compression transforms.

The value space may be a colour space and each image data itemrepresents a position in the colour space.

Each position in colour space may specify one or more colour values.

Each image data item in the set of image data items may be an n-tuplethat represents one or more colour values.

The image data may be texture data and each image data item in the setof image data items may represent one or more colour values associatedwith a respective block of one or more texels.

The set of reference data items may comprise a plurality of referencedata items each representing a position in the colour space.

The number of reference data items in the set of reference data itemsmay be less than the number of image data items in the set of image dataitems.

The set of reference data items may be stored in a number of bits lessthan the number of bits required for storing the set of image dataitems.

The encoding block may be configured to encode each image data item in anumber of bits less than the number of bits required for storing thatimage data item when not encoded.

Each image data item in the set of image data items may correspond to animage data item in the transformed set of image data items.

According to a third aspect of the present disclosure there is provideda method of decompressing compressed image data comprising an item ofencoded image data encoding a position in image-value space, and a setof one or more reference data items, the encoded image data itemidentifying a sequence of transforms from a predetermined set oftransforms, the method comprising: using the encoded image data item toapply the sequence of transforms identified by that encoded data item toa reference data item selected from the set of one or more referencedata items to thereby transform that reference data item to a decodedimage data item.

The image data item may be an n-tuple. The image-value space may be acolour space.

The encoded image data item may encode an n-tuple specifying a positionin the colour space.

The decoded image data item may specify a position in colour spacecorresponding to the position in colour space encoded by the encodedimage data item used to generate that decoded image data item.

Each of the one or more reference data items may represents a positionin the colour space.

The encoded image data item may be used to apply the sequence oftransforms identified by that encoded image data item to the referencedata item to thereby transform that reference data item from an initialposition in colour space to a position corresponding to the positionencoded by that encoded image data item.

Each position in colour space may specify one or more colour values.

The image data may be texture data and the image data item may representone or more colour values associated with a block of one or more texels.

The encoded image data item may contain information to select thereference data item from the set of one or more reference data items.

The encoded image data item may contain information representing theselective application of each transform from the predetermined set oftransforms to thereby identify the sequence of transforms to be appliedto the reference data item.

The information may be in the form of a series of data units, each dataunit representing the selective application of a corresponding transformfrom the predetermined set of transforms.

The encoded image data item may occupy a number of bits less than thenumber of bits occupied by its corresponding decoded image data item.

The predetermined set of transforms may be an ordered set.

The compressed image data may comprise a plurality of encoded image dataitems each identifying a sequence of transforms from the predeterminedset of transforms, and the method may further comprise, for each encodedimage data item: using the encoded image data item to apply the sequenceof transforms identified by that encoded data item to a reference dataitem from the set of one or more reference data items to therebytransform that reference data item to a decoded image data item.

Each encoded image data item may be used to generate a correspondingdecoded image data item.

The set of reference data items may represent a quantization of a regionof colour space that is smaller in extent than the region of colourspace spanned by the decoded image data items.

According to a fourth aspect of the present disclosure there is providedan image data decompressor configured to decompress compressed imagedata comprising an item of encoded image data encoding a position inimage-value space, and a set of one or more reference data items, theencoded image data item identifying a sequence of transforms from apredetermined set of transforms, the decompressor comprising: adecompression transform block configured to use the encoded image dataitem to apply the sequence of transforms identified by that encodedimage data item to a reference data item selected from the set of one ormore reference data items to thereby transform the reference data itemto a decoded image data item.

An image data decompressor as claimed in claim 2, wherein the image dataitem is an n-tuple.

The image-value space may be a colour space.

The encoded image data item may encode an n-tuple specifying a positionin the colour space.

The decoded image data item may specify a position in colour spacecorresponding to the position in colour space encoded by the encodedimage data item used by the decompression transform block to generatethat decoded image data item.

Each of the one or more reference data items may represent a position inthe colour space.

The decompression transform block may be configured to use the encodedimage data item to apply the sequence of transforms identified by thatencoded data item to said reference data item to thereby transform thatreference data item to a position in colour space corresponding to theposition in colour space encoded by that encoded image data item.

Each position in colour space may specify one or more colour values.

The image data may be texture data and the image data item representsone or more colour values associated with a block of one or more texels.

The decompression transform block may load the set of one or morereference data items and the set of predetermined transforms from amemory.

The decompression transform block may interpret information contained inthe encoded image data item to select said reference data item from theset of one or more reference data items.

The decompression transform block may be configured to interpretinformation contained in that encoded data item representing theselective application of each transform from the predetermined set oftransforms to thereby identify the sequence of transforms to be appliedto the selected reference data item.

The information may be in the form of a series of data units, each dataunit representing the selective application of a corresponding transformfrom the predetermined set of transforms.

The decompression transform block may be configured to output thedecoded image data item in a format that occupies a greater number ofbits than its corresponding encoded image data item.

The compressed image data may comprise a plurality of encoded image dataitems, and the decompression transform block may be further configuredto, for each encoded image data item, use the encoded image data item toapply the sequence of transforms identified by that encoded image dataitem to one of the reference data items selected from the set of one ormore reference data items to thereby transform the reference data itemto a decoded image data item.

The decompression transform block may be configured to use each encodedimage data item to generate a corresponding decoded image data item.

The image data compressor and/or image data decompressor may be embodiedin hardware on an integrated circuit.

The image data compressor and/or decompressor may be embodied inhardware on an integrated circuit. There may be provided a method ofmanufacturing, at an integrated circuit manufacturing system, an imagedata compressor and/or decompressor. There may be provided an integratedcircuit definition dataset that, when processed in an integrated circuitmanufacturing system, configures the system to manufacture an image datacompressor and/or decompressor. There may be provided a non-transitorycomputer readable storage medium having stored thereon a computerreadable description of an integrated circuit that, when processed,causes a layout processing system to generate a circuit layoutdescription used in an integrated circuit manufacturing system tomanufacture an image data compressor and/or decompressor.

There may be provided an integrated circuit manufacturing systemcomprising: a non-transitory computer readable storage medium havingstored thereon a computer readable integrated circuit description thatdescribes the image data compressor and/or decompressor; a layoutprocessing system configured to process the integrated circuitdescription so as to generate a circuit layout description of anintegrated circuit embodying the image data compressor and/ordecompressor; and an integrated circuit generation system configured tomanufacture the image data compressor and/or decompressor according tothe circuit layout description.

There may be provided computer program code for performing any of themethods above. There may be provided non-transitory computer readablestorage medium having stored thereon computer readable instructionsthat, when executed at a computer system, cause the computer system toperform any of the methods above.

The above features may be combined as appropriate, as would be apparentto a skilled person, and may be combined with any of the aspects of theexamples described herein.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure will now be described by way of example withreference to the accompanying drawings. In the drawings:

FIG. 1 shows a schematic illustration of an image data compressor forcompressing image data.

FIG. 2 is a flow chart illustrating an example series of steps performedby the image data compressor to compress image data.

FIG. 3 shows a schematic illustration of an image data decompressor fordecompressing compressed image data, such as data compressed by theimage data compressor shown in FIG. 1.

FIG. 4 shows a region of an example colour space occupied by image datato be compressed.

FIG. 5 shows the region of colour space occupied by the image data beingcompacted as a result of the application of a series of transforms tothe image values composing the image data.

FIG. 6 shows a set of reference values selected to quantize thecompacted region of colour space.

FIG. 7 is a flow chart showing an example series of steps performed bythe image data decompressor to decompress compressed image data.

FIG. 8 is a schematic illustration of how an encoded image value is usedto apply a sequence of transforms to a reference value (e.g. one of thereference values shown in FIG. 5) to transform the reference value to adecoded image value.

FIG. 9 shows examples of regions of colour space occupied by image datafor three images.

FIG. 10 shows a computer system in which an image data compressor and/ordecompressor is implemented.

FIG. 11 shows an integrated circuit manufacturing system.

Where appropriate, like reference numerals have been used to denote likecomponents.

DETAILED DESCRIPTION

The following description is presented by way of example to enable aperson skilled in the art to make and use the invention. The presentinvention is not limited to the embodiments described herein and variousmodifications to the disclosed embodiments will be apparent to thoseskilled in the art.

There is provided a method and apparatus for compressing anddecompressing image data. The image data may comprise a set of imagedata items each representing a position in image-value space. Thus, eachitem of image data may contain information defining an image value. Theset of image data items defines a first occupied region of value space.The image data could for example be texture data, and the image valuesmay be texel values for blocks of one or more texels. The image datacould alternatively be colour data specifying pixel values of an image(e.g. a rendered image), and the image values may be the pixel valuesfor blocks of one or more pixels forming the image. One example of animage-value space is a colour space, and each image data item mayrepresent a position in the colour space so that each item of image datarepresents one or more colour values, the set of image data itemsthereby defining an occupied region of colour space. The colour spacecould be an RGB space, an RGBα space, a YUV space etc. Thus, each itemof image data may contain colour data for a respective block of one ormore texels or pixels that represents at least one colour, or colourvalue, associated with the respective block. Each item of image data mayas such be in the form of an n-tuple, or vector. In other examples,image item might represent colour data for a plurality of pixels or,alternatively, a sub-region of the parent colour space.

As part of the image data compression, a series of transforms areselectively applied to subsets of the initial image data items togenerate a transformed set of image data items that occupies acompressed, or compacted, region of value space relative to the firstregion. That is, each of the series of transforms is applied to arespective subset of the image data items. In the example that the itemsof image data each represent positions in a colour space, this step ofapplying a series of transforms to the set of data items forming theimage data may be viewed conceptually as ‘folding’ the region of colourspace occupied by the image data. This folded region of colour space isspanned, or occupied, by the transformed set of image data items and isreduced in extent relative to the region of colour space occupied by theinitial image data. A set of reference items of data (e.g. representinga set of positions in value space) is then identified that quantizes thecompressed region in value space occupied by the transformed set ofimage data items. Continuing the example that the items of image datarepresent positions in colour space, this set of reference items may beviewed as a quantization of the folded region of colour space spanned bythe transformed image values. A fixed set of decompression transformsmay then be identified. In one example the fixed set of decompressiontransforms is an ordered set of transforms that, when selectivelyapplied to the transformed set of image data items, reverses thecompression of the occupied region of value space (e.g. colour space)caused by applying the series of transforms. That is, the ordered set oftransforms can be applied to the transformed set of image data items tore-generate the initial set of data items. Continuing the example inwhich the value space is a colour space, the set of ordered transformscan be viewed conceptually as the transforms that, when applied to thetransformed set of data items, ‘unfold’ the folded region of colourspace so that the image values represented by the data items again spanthe region of colour space occupied by the initial image values. Anotherway of expressing this is that the ordered set of transforms may beapplied to the transformed set of image data items to ‘undo’ the effectof the series of transforms applied to the initial set of image dataitems.

Not every transform in the series of transforms is applied to each itemof image data when folding the region of value space occupied by theimage data. Thus in order to ‘unfold’ the occupied region of valuespace, not every transform from the fixed set of decompressiontransforms needs to be applied to each item of data in the transformedset of data items. Therefore for each image data item, a sequence oftransforms from the fixed set of decompression transforms may beidentified that generates an approximation of that image data item whenapplied to a selected one of the set of reference data items. The“selected one” of the set of reference data items may for example be thereference data item of the set of reference data items which mostclosely represents the transformed data item corresponding to theparticular image data item to be approximated. The sequence ofdecompression transforms may reverse the effects of the compressiontransforms applied to that image data item during the folding of valuespace. An encoded image data item may then be generated for each item of(un-encoded) image data that represents the identified sequence oftransforms for that data item. The fixed set of transforms, set ofreference data items and plurality of encoded data items are then storedas compressed image data. By storing information indicating a sequenceof transforms for each image data item, rather than storing the items ofimage data themselves, the image data may be stored in a compressedformat. This may be the case even when including the storage of the setof reference values and fixed set of decompression transforms. That is,the bit-saving potentially gained by storing the transforms instead ofeach image data item may outweigh the bit-cost of having to store theset of transforms and the set of reference values.

As part of the image data decompression, the encoded image values areeffectively decoded to re-generate the decompressed image data. Todecompress the compressed image data, each encoded item of image dataformed during the compression stage may be used to apply the sequence oftransforms identified by that encoded data item to a reference dataitem. The reference value may be from the set of reference valuesgenerated during the compression stage. The sequence of transformsidentified by the encoded value is applied to the reference value totransform the reference value to a decoded image value. That is, thesequence of transforms represented by that encoded value is applied to areference value to re-generate the corresponding decompressed imagevalue, or an approximation of it. This stage may be viewed conceptuallyas unfolding the compacted region of value space generated during thecompression stage. Because the sequence of transforms are applied to aquantized representation of the compacted region of value space, thedecoded value generated from a given encoded value may not exactly matchthe image value that was encoded to be represented by that encoded value(though of course in some instances it may do). That is, thedecompression process may generate image data that matches, or closelyresembles, the image data that was compressed during the compressionstage. This may be expressed by saying that the decompressed image datacorresponds to the original image data that was compressed and encodedin the set of encoded data items.

FIG. 1 shows an example of an image data compressor 100. The compressor100 is configured to compress image data comprising a plurality of itemsof image data. The compressor comprises a compression transform block102, an encoding block 104, a quantization unit 106 and a reversaltransform block 110. The compressor is shown coupled to a memory 108.The memory 108 is shown separate from the compressor, but in otherexamples it may form part of the compressor. A first input of thecompression transform block is configured to receive image datacomprising an initial set of items of image data (e.g. uncompressedimage data). This image data is denoted I_(D). Each item of image datadenotes a position in a value space and so represents an image value.The positions in value space represented by the set of image data itemsspans a first region (which may be referred to as an uncompressed regionof value space). The compression transform block may be configured toreceive the image data from memory. This could be memory 108 or aseparate memory (not shown).

A first output of the compression transform block is coupled to a firstinput of the reversal transform block. A second output of thecompression transform block is coupled to a first input of thequantization unit. A first output of the reversal transform block iscoupled to a first input of the encoding block. A first output of thequantization unit is coupled to a second input of the encoding block.The encoding block further has an input/output interface (I/O) coupledto a first input/output of the memory. The quantization unit has aninput/output coupled to a second input/output of the memory, and thecompression transform block has an input/output coupled to a thirdinput/output of the memory. The memory may be coupled to the remainingblocks and units of the compressor 100 via a bus to allow bi-directionaldata transfer therebetween.

The initial set of image data items forming the image data I_(D) mayrepresent colour data. In particular, the value space may be a colourspace and each item of image data may specify a point, or position, inthe colour space. Each item of image data may as such represent a colourvalue. The image data may for example be texture data, or a subset, orpart, of the texture data. An item of image data may represent one ormore colour values. A colour value may comprise one or more componentswith each component having an associated value such that a single colourvalue comprises multiple component values. For example, a single colourvalue may contain four colour components (e.g. a red component, a greencomponent, a blue component and an alpha component). This may be denotedmathematically in general as C=(c₁, c₂ . . . c_(n)), where C denotes thecolour value (in this case with n components), and c₁, c₂ . . . c_(n)represent n colour components that form the colour value.

Each item of image data representing a colour value may therefore be inthe form of a tuple, or vector, comprising a plurality of elements, witheach element representing a value for a respective colour component.Colour values may comprise a group, or set, of colour components. Forexample, two colour values, denoted C₁ and C₂ may both comprise R, G, Band a components. Values for corresponding components of differentcolour values may of course differ. In the case that an image data itemcontains information representing two or more colour values, thatinformation may be represented as a tuple comprising a first set ofelements representing colour components for the first colour value, asecond set of elements representing the colour components for the secondcolour value, and so on. That is, each image data item representingcolour data may be a tuple with components (c₁ ¹, . . . c_(n) ¹, c₁ ², .. . c_(n) ², . . . , c₁ ^(m) . . . c_(n) ^(m)), where the subscriptindex denotes the colour component, ‘n’ denotes the number of colourcomponents forming a single colour value, the superscript index indexesthe colour value and ‘m’ denotes the number of colour values representedby the image data item. Each component of the tuple may represent acolour ‘channel’, where a channel is a particular colour component for aparticular set of colour values. As a specific example, each item ofimage data value may be a vector that represents two RGBα colour valuesin the form (R¹, G¹, B¹, α¹, R², G², B², α²). In other example cases,the components in the tuple may represent less regular selections ofproperties. For example, each tuple may specify values for a mixture ofRGB and YUV components, such as (R¹, G¹, Y¹, V¹). It will be appreciatedthat any selection of colour properties is possible.

If colour values can be represented as a tuple, the set of colour valuescontained within the image data I_(D) may represent positions within acolour space defined by a set of (orthogonal) axes, where each axis maycorresponds to a different colour channel. Each element of the tuplespecifies a value along a corresponding axis. As an example, a set ofRGBα colour values may be represented as points within an RGBα colourspace defined by an R, G, B and α axis (i.e. a four dimensional space).In a further example, a set of RGBα colour pairs may be represented aspoints within an 8-dimensional space defined by an R₁, G₁, B₁ and α₁axis and an R₂, G₂, B₂ and α₂ axis, so that a position within the eightdimensional colour space specifies two colour values (and eight colourchannels). It will be appreciated that an image data item may representany number of colour values in an analogous manner by specifying aposition within a general n-dimensional colour space.

The operation of the image data compressor to compress the image dataI_(D) will now be described with reference to the flow chart in FIG. 2.

For ease of illustration, in this example each item of image data in theimage data I_(D) represents a single colour value comprising two colourcomponents: a red component and a green component. That is, in thisexample the image data contains colour data for two colour channels.Each item of image data may therefore be a vector with components (R, G)that specifies a point within a colour space. This colour space isillustrated in FIG. 4 and denoted generally at 400 and is an example ofa more general image-value space. Although the colour space in thisexample is two-dimensional, it will be appreciated that this is anexample only, chosen for ease of illustration. In general the colourspace may be n-dimensional (n≥1),

The colour space 400 is defined by an R axis 402 and a G axis 404. Apoint, or position, within the colour space specifies the values of thered and green components for a particular colour value. A bound region406 depicts the distribution of colour values in the colour spacerepresented by the set of image data items in the uncompressed imagedata I_(D). The bound region may therefore be said to depict the regionof colour space occupied by the image data I_(D). The shape of the boundregion is determined by the distribution of colour values in the imagedata—it is shown as a square in this figure merely for ease ofillustration. In addition, although only a single bound region is shownin FIG. 4, in other examples the distribution of colour values may besuch as to give rise to two or more disjoint clusters in colour space(i.e. two or more separate bound regions).

Although the bound region is shown in FIG. 4 as being a continuousregion, this is for the purposes of illustration and it will beappreciated that the occupied region of colour space would in practicecomprise a set of discrete points. However, because in practice thenumber of discrete points would likely be large for a given set of imagedata I_(D), the set of points in the colour space may be approximated,or modelled, as one or more occupied regions of colour space. Theoccupied region may be characterised as one or more surfaces if thecolour space is two-dimensional (e.g. region 406) or more generally asone or more n-dimensional volumes (if the colour space has three or moredimensions). The envelope of the occupied region may bound all the imagevalues in the image data, or it may only bound those image values lyingwithin a relatively well-defined region of colour space (e.g. imagevalues that represent statistical outliers for the image data may not bebound by the envelope of the occupied region). An occupied region mayfor example be determined for a given distribution of data points byperforming a cluster analysis, such as density-based clustering.

To illustrate how the distribution of colour values may appear inpractice, FIG. 9 shows the colour distributions obtained from ananalysis of three different images. The colour spaces are shown at 901,903 and 905 and show the distribution of red vs green values for thedifferent respective images. It can be seen that the first distribution901 can be approximated as two disjoint clusters, whereas thedistributions 903 and 905 would be more accurately modelled as a singlecluster. The darker regions of each cluster represent a higherconcentration of occupied positions in the colour space.

Returning back to FIGS. 2 and 4, at step 201 the compression transformblock 102 applies a series of transforms, each of which is applied to arespective subset of the set of image data items, to generate atransformed set of image data items that occupies a compacted region incolour space relative to the region of colour space occupied by theimage data I_(D) (i.e. the region depicted at 406). That is, the imagevalues represented by the transformed set of image data items span amore compact region of colour space compared to the image valuesrepresented by the data set I_(D). Each transform in the series may beapplied to a different subset of data items. This series of transformsmay as such be referred to as a compacting series of transforms, and thetransforms may be referred to as compression transforms. The transformedset of image data items are denoted I_(T) and are output by thecompression transform block to the reversal transform block 110 andquantization unit 106. Each item of image data in the set I_(D)therefore corresponds to an item of image data in the set I_(T).

A transform may be performed on an item of image data by performing amatrix multiplication on that data item. For example, a transform on atuple, or vector, of data may be represented as:

$\begin{pmatrix}c_{1}^{1^{\prime}} \\c_{2}^{1\prime} \\\vdots \\c_{3}^{2\prime} \\c_{4}^{2\prime}\end{pmatrix} = {\begin{bmatrix}m_{11} & m_{12} & \ldots & m_{18} & m_{19} \\m_{21} & m_{22} & \ldots & m_{28} & m_{29} \\\vdots & \vdots & \ddots & \vdots & \vdots \\m_{71} & m_{72} & \ldots & m_{77} & m_{78} \\m_{81} & m_{82} & \ldots & m_{87} & m_{88}\end{bmatrix}\begin{pmatrix}c_{1}^{1} \\c_{2}^{1} \\\vdots \\c_{3}^{2} \\c_{4}^{2}\end{pmatrix}}$

Here the tuple (c₁ ¹, c₂ ¹ . . . c₄ ²) is an item of image data thatrepresents a pair of colour values prior to the transformation, and thetuple (c₁ ¹′, c₂ ¹′, . . . c₄ ²′) is a transformed image data item thatrepresents the pair of colour values following the transformation. Atransform may viewed as an operation that causes at least one value inthe data it is operating on to change. Under this view, applying theidentity matrix may not be considered as applying a transform becausethe identity matrix, by definition, leaves the data it is operating onunchanged.

Alternatively the colour space may be expressed in homogeneouscoordinates wherein an additional dimension is included. This permitsmatrix operations to perform additional transformations such astranslation in “one step”. For example, if an N-tuple (c₁, . . . c_(n))is logically represented as the N+1-tuple, (c₁, . . . c_(n), 1), thenthe (N+1)×(N+1) matrix

$\quad\begin{pmatrix}m_{1,1} & m_{1,2} & \ldots & m_{1,n} & t_{1} \\m_{2,1} & \ldots & \; & m_{2,n} & t_{2} \\\vdots & \; & \ddots & \vdots & \vdots \\m_{n,1} & \; & \; & m_{n,n} & t_{n} \\0 & 0 & \ldots & 0 & 1\end{pmatrix}$would also perform an additional translation by (t₁, . . . t_(n)). Ifrequired, multiple matrix operations can then be combined by standardmatrix multiplication into a single matrix. Note that this is a logicalrepresentation and values that are always constant, such as 0 or 1, neednot actually be stored.

The compression transform block may perform the series of transformssequentially. Applying each of the series of transforms to respectivesubsets of the set of image data items in the data I_(D) may transforman item of image data specifying a first position in colour space to atransformed image data item specifying a second position in colourspace. That is, an item of image data in the data set I_(D) and itscorresponding transformed data item in the data set I_(T) may specifydifferent points in colour space.

Applying the series of transforms in this way effectively reduces thesize, or extent, of the region of colour space occupied by the imagedata items. The transforms may therefore be viewed conceptually as‘folding’, or compressing, the occupied region of colour space. Anexample of such a series of transforms for folding the region of colourspace 406 is illustrated in FIG. 5. The positions in colour spacespecified by six example image data items A, B, C, D, E and F are shownat 518 _(A), 518 _(B), 518 _(C), 518 _(D), 518 _(E) and 518 _(F)respectively.

As a first step, a line 504 through the region 406 is determined thatpartitions the region into two sub-regions denoted 502 (indicated by thedashed markings) and 506. Thus the set of image data items arepartitioned into two subsets. In the example, the line 504 is shownmidway through the data set, but in general the position would be chosenas to best aid the compressed representation. As explained above, thecolour space in this example is 2-D to aid illustration, but in practicemay be any n-dimensional space. Line 504 is thus an example of a moregeneral hyperplane (i.e. a subspace of one less dimension (n−1) than theambient n-dimensional space).

A first transform is then applied to the subset of image data items thatrepresent positions in the colour space situated within sub-region 502to reflect those data items about line 504 so that the set of data itemsoriginally specifying a position in region 502 now approximatelycoincide with region 506. In this example the regions match exactly butthat is not typical. This first transform may be viewed conceptually asfolding the sub-region 502 onto sub-region 506 about the line 504. Theoccupied region of colour space following this first round oftransformations is shown at 508. The positions of the six image dataitems A, B, C, D, E and F following the first transform are shown at 518_(A′), 518 _(B′), 518 _(C′), 518 _(D′), 518 _(E′) and 518 _(F″)respectively. It is noted that this transform has caused the data itemsB and F to be coincident in the colour space, i.e. both of these dataitems now specify the same position in colour space.

Region 508 is shown as being partitioned by line 510 that divides theregion into sub-regions 512 (indicated by dashed markings) and 514.Again, line 510 is an example of a more general hyperplane, which inthis example is chosen to bisect the region 508 but in general (e.g. formore complex distributions) is chosen to best aid the compressedrepresentation. A second transform is then applied to the subset ofimage data items that specify positions in the colour space situatedwithin the region 512 to reflect those data items about the line 510.This transform may be viewed conceptually as folding the occupied regionof colour space 512 onto region 514 about the plane 510. The occupiedregion of colour space following this second transform is shown at 516and is spanned by the transformed set of image data items I_(T). Thepositions specified by the image data items A-F following the secondtransform are shown at 518 _(A″-F″) respectively. It is noted that theimage data items B and F specify coincident positions in the colourspace as do the data items A and E. This serves to illustrate how thenumber of different positions in colour space occupied by the set ofdata items following the transforms may (as in this example) be lessthan that occupied by the data items prior to the transforms beingapplied.

The planes (and associated axes perpendicular to the planes) about whichto fold the colour space (e.g. planes 504 and 510) may be determined bythe compression transform block 102. The compression transform block mayfor example process the set of image data items by performing aprincipal component analysis. This may be a particularly usefultechnique for determining the orientation and position of theaxes/hyperplanes when the value space is n-dimensional with n≥2. It mayalso be a useful technique when the occupied region of value space is amore general shape and not a more simple geometric shape such as isillustrated in FIG. 5. The compression transform block may perform aprincipal component analysis on the set of image data items to determinea direction in value space along which there is the widest distributionof image values. This direction may be referred to as a principal axis.A partitioning plane (in general a hyperplane) may then be chosen thatis perpendicular to the principal axis. The compression transform blockmay determine the position of the fold plane with respect to theprincipal axis from an analysis of the distribution of image valuesalong the principal axis. The position of the fold plane may varydepending on the distribution of image values within the colour space,as well as on what stage the folding process has reached. For example,if the distribution of image values is relatively tight, or compact, theoccupied region of colour space may be halved (or approximately halved)by positioning the fold plane such that approximately half of the imagevalues are on either side of the fold plane. Alternatively, the positionof the partition plane may be chosen (out of all possible positions ofthe partition plane along the associated axis), so that, given theresulting image value sets A and B, the total sum of the squareddistances of each value of set A to the average value of set A, denotedĀ, plus the total sum of the squared distances of the values of B to theaverage value of set B, denoted B, is minimised. Note that if N is thetotal number of image values this minimisation operation can be achievedwith only O(N log N)cost.

If the image data items occupy disjoint clusters in colour space, e.g. alarger cluster and a smaller, satellite cluster, the compressiontransform block may choose a partition and operation that transforms thesmall cluster to overlap the larger cluster (or vice-versa). Transformscan then be applied to compress, or fold, the single cluster. If insteadtransforms were applied to fold the larger cluster before folding thesatellite cluster onto the larger cluster, the satellite cluster mayjust be reflected about colour space with little resulting compressionof the occupied region. Because the shape of the occupied region maychange with each compression transform, the compression transform blockmay perform principal component analysis on the set of image valuesafter each transform has been applied in order to determine the nexttransform in the series.

Other spatial partitions that may suit certain data distributionsinclude separating based on a distance from a given point (i.e. ahyperspherical boundary) or an alternative metric. Alternatively, ratherthan use a spatial partition, approaches which may involve overlappingregions may be chosen. For example, consider a cloud of colour valueswhere, say, for each of a significant portion of those colour values,there is another colour value that is offset by a small, approximatelyconstant, displacement. Those displaced colour values could be placedinto their own set and the displacement used to ‘fold’ them onto theremainder.

When a transform of the series is being applied, the same transform isapplied to each image data item that is subject to that transform in theseries. For example, when the first transform described above isapplied, the same transform is applied to each image data item thatrepresents a point within region 502 of the colour space. That is, thesame matrix may be applied to each vector for which a transform of theseries is to be applied. It will be appreciated however that althoughthe series of transforms is applied to the set of image data items as awhole (e.g. to fold the region of colour space 406 to the compressedregion 516), the same sequence of transforms are not necessarily appliedto each image data item. For example, for the series of transforms shownin FIG. 5, the first transform is only applied to the subset of imagedata items that specified positions within region 502 of the colourspace; the first transform is not applied to the remaining subset ofimage data items representing positions within region 506 of the colourspace. Similarly, the second transform is only applied to the subset ofimage data items representing positions within region 512 of the colourspace. Using the six items of image data A-F as an example, items A andF are subject to the first and second transforms; item B is subject tothe second transform but not the first; items C and E are subject to thefirst transform but not the second; and item D is not subject to eithertransform.

The above example illustrates how each of a series of transforms can beapplied to respective subsets of image data items in the image dataI_(D) so as to reduce the size, or extent, of the region of colour spaceoccupied by that data. This may alternatively be expressed by sayingthat the transforms are applied to the set of image data items of dataI_(D) to compress, or compact, the region of colour space occupied bythe image data items compared to the region occupied prior to thetransforms being applied. Reducing the extent of the occupied region ofcolour space defined by the image values may enable the occupied regionof colour space to be accurately represented using vector quantizationwith only a limited number of vectors. This will be explained in moredetail below.

At step 203, the quantization unit 106 identifies a set of one or morereference data items that quantize the compacted region of colour space(in this example region 516). This process is illustrated with referenceto FIG. 6, which shows the compacted region of colour space 516 formedfrom applying the compression series of transforms to the set of imagedata items I_(D) from step 201. This set of reference data items aredenoted I_(R).

It will be appreciated that the compacted region 516 may represent theimage values specified by the same number of image data units as that ofthe initial occupied region of colour space 406 (though the number ofdifferent values specified by the image data items following compressionis fewer). In order to reduce the storage requirements of the imagedata, it may be desirable to quantize the compacted region of colourspace by storing a set of reference data items that represent thecompacted region in a reduced resolution. As has been mentioned above,it will be appreciated that the compacted region of colour space may inpractice be formed of a set of discrete points. As such, quantizing thecompacted region of colour space may refer to representing the compactedregion with a reduced number of data items (i.e. at a coarsergranularity) than that which are contained within the compacted regionprior to quantization. Each reference data item may therefore specify aposition in colour space (and in particular a position within thecompacted region) and so represent a reference value. That is, eachreference value may represent one or more colour values within thefolded colour space. Each reference data item may therefore be in theform of a vector, or tuple (e.g. a four or 8-tuple) where each elementof the tuple/vector specifies a value for a particular colour component,or colour channel.

It has been realised that due to the smaller region of colour spaceoccupied by the transformed set of image data items, the compactedregion of colour space may be accurately represented with a relativelysmall number of reference tuples, or vectors.

The positions specified by an example set of reference data items A′,B′, C′ D′ that quantize the compacted region of colour space 516 areshown in FIG. 6 at 602, 604, 606 and 608 respectively. It will beappreciated that the number of reference items shown in FIG. 6 is merelyan example and that the number of reference data items may be readilychosen or determined as an implementation detail. In some cases, thecompacted region of colour space may be quantized using a singlereference data item. The more transforms or folds that are applied, thesmaller the compacted region of colour space may become and the morelikely it is that the compacted region can be approximately representedwith a single reference data item. In a practical implementation, inorder to optimise the compression of the data a balance may need to bestruck between the cost of applying a greater number of transformationsto more tightly fold the data (which each need to be stored), and thegain of reducing the number of reference data items required to quantizethe folded data. For certain data sets there may be a point where thecost of storing additional reference data items is cheaper than storingthe additional transforms to further compact the colour space.

As part of quantizing the compacted region of colour space, thequantization unit 106 may associate subsets of data items in the setI_(T) with a respective reference data item (including the situation inwhich all of the data items in the set I_(T) are associated with asingle reference data item). The quantization unit 106 may do this bydetermining regions around each reference value that partition thecompacted region of colour space (e.g. Voronoi regions). Each item ofimage data that specifies a position in colour space within a givenregion may then be associated with the reference item located in thatregion. For example, in FIG. 6, the compacted region of colour space ispartitioned into four regions 610, 612, 614 and 616 (delineated by thedashed markings) that encompass reference values 602-608 respectively.Each item of image data that specifies a position in colour spacelocated within region 610 is associated with reference item A′; eachimage data item that specifies a position in colour space located withinregion 612 is associated with reference item B′; each image data itemthat specifies a position in colour space located within region 614 isassociated with reference item C′; and each image value that representsa position in colour space located within region 616 is associated withreference value D′.

The reference items I_(R), and the regions that partition the compactedregion of colour space, may be determined by the quantization unit 106using an algorithm for vector quantization, such as a clusteringalgorithm. The regions and reference items may be determined iterativelyusing the algorithm, but the number of reference items used to quantizethe compacted region may be predefined or implementation specific.

The set of reference items chosen by the quantization unit 106 may bereferred to as a codebook.

At step 205, the reversal transform block 110 identifies a fixed set ofdecompression transforms.

The set of decompression transforms may be transforms that, whenselectively applied to the transformed set of data items I_(T),reverses, or approximates the reversal of, the compaction of theoccupied region of colour space that is caused by applying thecompacting series of transforms to the initial set of image data itemsin the image data I_(D). Thus each decompression transform in the setmay reverse the effect of a corresponding compression transform in theseries of compression transforms. The set of decompression transformsmay therefore effectively regenerate the initial set of image data itemsfrom the transformed set of image data items. The transforms may beordered in the sense that the transforms in the set are applied in aspecific order. That order may be fixed so that it is not possible toapply the transforms in a different order to that specified. The set ofdecompression transforms are denoted S_(o) and are output from thereversal transform block to the encoding block 104.

Referring to our current example, the set of decompression transforms,when applied to the transformed set of image data items I_(T), unfoldsthe region of colour space 516 occupied by the transformed image dataitems back to the unfolded region 406. The ordered set of transforms inthis case may therefore consist of: 1) a reflection about line 510; and2) a reflection about the line 504.

The fixed set of decompression transforms may be determined from theseries of compression transforms applied to fold the occupied region ofcolour space. The set of decompression transforms may be described asthe inverse set of transforms to the series of compression transforms,or equivalently, each decompression transform in the set ofdecompression transforms is the inverse transform of a correspondingtransform in the series of compression transforms.

The set of decompression transforms may alternatively be predetermined,i.e. the reversal transform block may have access to a predetermined setof transforms. In this case the reversal transform block may notactively identify the set of decompression transforms (since they willbe predetermined), but instead it may determine parameters for each ofthe transforms in the set. This may reduce the complexity of thecompression process. Thus step 205 may not be an active step of thecompression process.

The series of compression transforms and the set of decompressiontransforms are transforms applied to the set/transformed set of imagedata items as a whole. Just as it may be the case that each compressiontransform in the series is applied to a respective subset of the imagedata items during colour space folding (i.e. not every transform in thecompacting series of transforms is applied to each image data itemduring the colour space folding), it may also be the case that eachdecompression transform in the set S_(o) is applied to a respectivesubset of the transformed image data items I_(T) to unfold the colourspace (i.e. not every transform from the set of transforms S_(o) isapplied to each image data item in the transformed set I_(T) to unfoldthe colour space.)

Thus at step 207 the encoding block may identify, for each initial imagedata item in the data I_(D), a sequence of transforms from the fixed setof transforms that generates an approximation of that image value whenapplied to a selected one of the one or more reference data items.

The sequence of transforms for each image data item may be generatedfrom the compression transforms applied to that data item. For example,the sequence of transforms identified for each image data item may bedetermined as the sequence that reverses the effects of the transformsapplied to that data item to generate the transformed set of image dataitems I_(T). In other words, the identified sequence of transforms foran item of image data may be one that reverses the transforms applied tothat data item during compaction, or folding, of the colour space. Theidentified sequence of transforms may therefore, if applied to an itemof image data in the transformed set I_(T), transform that image dataitem from its position in colour space following application of thecompression transforms back to its original position in colour spacebefore the compression transforms were applied. Thus the decompressiontransforms may be applied in reverse order to exactly the same subsetsof data items as in the compression step.

However, in examples described herein, during decoding the sequence ofdecompression transforms will not be applied to the transformed set ofimage data items but will be applied to one of the reference data items.Since the reference data item may not specify the same position incolour space as a given transformed image data item (due to thequantization), applying the sequence of transforms to the referencevalue may not exactly re-generate the corresponding initial image dataitem, but it will generate an approximation of that image data item.

For example, referring again to FIG. 5, the identified sequence oftransforms for image data item A may be: 1) a reflection about fold line510; followed by 2) a reflection about fold line 504 (i.e. the firsttransform in the ordered set followed by the second transform in theordered set). This sequence transforms image data item A from position518A″ back to position 518A. During decoding however, this sequence oftransforms is likely to be applied to the reference value 608, which maynot be coincident with position 518A″. Thus applying the sequence oftransforms to value 608 will generate an image data item approximately(though possibly not exactly matching) position 518A. As anotherexample, the identified sequence of transforms for data item C mayconsist only of the second transform in the ordered set (to transformitem C from position 518C″ to 518C), and the identified sequence oftransforms for data item B may consist only of the first transform inthe ordered set (to transform item B from position 518B″ to 518B). Inthis example, no transforms are identified for image data item D.

The sequences of transforms identified for each item of image data maytherefore not all be the same. However, each identified sequence isformed from the same fixed set of decompression transforms. That is, asingle set of decompression transforms is used to form the sequence oftransforms for each image data item. If the set of decompressiontransforms is an ordered set, each sequence of transforms may be formedfrom the selective application of each transform of the ordered set oftransforms.

In the example described above, the sequence of transforms identifiedfor each image data item was determined as the inverse transforms to thetransforms applied to that image data item from the series ofcompression transforms. In an alternative example, the encoding blockmay use a different approach to identify the sequence of transforms foreach image data item. The encoding block may identify a set of coloursrepresentable with the fixed set of transforms and the set of one ormore reference items. This set may be the set of all representablecolours for a fixed sequence length (i.e. the colours generated byapplying, to each reference data item, each possible sequence oftransforms of a fixed length that can be generated from the set ofdecompression transforms). The encoding block may then search the set ofrepresentable colours for the closest match to each colour valuerepresented by the image data items in the initial set I_(D). Thesequence of transforms (and the reference data item) used to generatethe closest colour match for each data item are then identified. Thus inthis example, the identified sequence of transforms for an image dataitem may not be the sequence of transforms that reverses the transformsapplied to that image data item during compression (i.e. it may not bethe inverse to the compacting series of transforms), but it maynevertheless accurately encode that data item. This is because theidentified sequence of transforms can be applied to a reference item togenerate an approximation of the image data item. It will be appreciatedthat in this example the fixed set of decompression transforms may notbe inverses of the compression transforms. They could be a predeterminedset of transforms formed independently of the compression process.

In another approach to producing a sequence of transformations and setof reference items, a standard vector quantisation approach may be usedon the initial set of colour values to reduce that set to a smaller setof quantised values. The folding/fitting process may then be applied tojust that smaller set in order generate a selectable sequence oftransformations.

At step 209, the encoding block 104 encodes each item of image data inthe set I_(D) to generate a respective encoded image data item. Eachitem of image data is encoded as a representation of the sequence oftransforms identified for that data item during step 205. In otherwords, each encoded data item contains information representing thesequence of transforms identified for the image data item that isencoded by that encoded data item. The set of encoded data items aredenoted I_(E).

Each encoded image data item may contain information representing theselective application of each transform from the set of decompressiontransforms S_(o) to thereby represent the sequence of transformsidentified for that image data item. That information may be in the formof a series of data units, with each data unit representing theselective application of a corresponding transform from the ordered setof transforms S_(o). If the set of decompression transforms is anordered set, each encoded image data item may comprise a number of suchdata units equal in number to the number of transforms forming theordered set. If the set of decompression transforms is a fixed setformed independently of the compression transforms, the number of dataunits may be equal to the sequence length used to generate the set ofrepresentable colours.

In one low-cost implementation, each data unit may be a single bit thatrepresents a binary value of ‘1’ or ‘0’. A value of ‘0’ for a bit mayindicate that the corresponding transform from the ordered set oftransforms does not form part of the identified sequence, and a value of‘1’ may indicate that the corresponding transform does form part of theidentified sequence, or vice versa. Thus each encoded image value maycontain information representing a binary string that represents theidentified sequence of transforms for that image value.

Referring again to our previous example, the encoded data items foritems A and F may comprise two data units representing the binary string‘11’ to indicate that the identified sequence for those data itemscontains both the first and second transforms from the ordered set oftransforms. As another example, the encoded data item for image dataitem B may comprise two data units representing the binary string ‘10’to indicate that the identified sequence of transforms for that thatdata item contains the first transform from the ordered set oftransforms but not the second transform; and the encoded data items forimage data items C and E may comprise two data units representing thebinary string ‘01’ to indicate the identified sequence for those dataitems contains the second transform but not the first transform. Theencoded data item for D may comprise two data units representing thebinary string ‘00’ to indicate that the sequence of transformsidentified for that image data item contains no transforms from theordered set of transforms.

An indication of a reference data item on which to perform the sequenceof transforms may additionally be stored as part of each of the encodedimage data items. That is, an index to a selected reference item may bestored within the encoded value for each image item. Each encoded valuemay for example contain information used to identify a reference itemfrom the codebook, such as an indexing data unit used to index areference item. Storing an index within the encoded value (rather thanthe reference item) is advantageous due to the reduced memoryrequirements. Thus the quantization unit 106 may additionally output theset of reference items I_(R) to the encoding block 104. For situationsin which the compacted region of colour space is represented by a singlereference item, the encoded values may not contain an indexing data unitbecause it wouldn't be necessary.

At step 211, the set of encoded image data items I_(E), the set ofreference items I_(R) and the fixed set of decompression transformsS_(o) are stored as compressed image data for the image data I_(D). Thecompressed image data may be stored in memory 108. Although shown inFIG. 1 as being stored in a single block of memory, this is for thepurpose of illustration only and it will be appreciated that thecompressed image data may be stored across more than one memory unit.The compressed image data also need not be stored in contiguous memoryblocks, though it may be. The set of decompression transforms and theidentified set of reference items may be stored together as a datastructure. The data structure contains the instructions to decompressthe compressed image data (i.e. the set of decompression transforms) andso may be referred to herein as an ‘unfolding structure’. Information onwhat instructions from the unfolding structure are to be used to decodean encoded image item is contained within that encoded image item.

Thus following compression, the image data I_(D) can be stored as a setof encoded image items I_(E). Rather than storing the data for eachimage data item directly (e.g. colour values), an encoded data item canbe stored that represents the sequence of transforms that need to beapplied to some reference value, and if there is more than one possiblereference value, that reference value or index of the reference value,in order to generate the decoded data for the image data item. Thestorage (e.g. the number of bits) required to store a sequence oftransforms may be less than the storage required to store the decodeddata for an image value. Thus the compressed image data may require asmaller amount of memory for storage than the decompressed image data.This may be the case even if the set of reference items and the orderedset of transforms are stored as part of the compressed data. Further, ithas also been realised that, in many practical implementations, theimage data (e.g. colour and/or texture data) can be compressed using arelatively restricted set of transformations, for example translation,scaling, skewing and/or rotation. This restricted set of transformationscan be represented (and thus stored) more compactly than the storage offull N² or (N+1)² values for general N×N or N+1×N+1 transformationmatrices, thus reducing the cost of storing the ordered set oftransforms as part of the compressed data.

The process of decompressing the compressed image data will now bedescribed with reference to FIGS. 3 and 7. For ease of illustration,this explanation will be made with continued reference to the exampleimage data as illustrated in FIGS. 4 to 6.

FIG. 3 shows an image data decompressor 300. The decompressor 300 mayform part of a graphics core of a GPU. The image decompressor comprisesa decompression transform block 302, and a memory 304. The memory 304stores a predetermined set of transforms 306 and a set of referenceitems 308. This information may be stored as a single data structure(e.g. the unfolding structure discussed above), denoted by the dashedmarkings at 310. The predetermined set of transforms may be the set ofdecompression transforms determined by the image data compressor 100 atstep 203. The set of decompression transforms may be ‘predetermined’ inthe sense that they are determined previously (e.g. during thecompression stage) and are known by the decompressor 300 at the time thecompressed image data is to be decompressed. The set of reference itemsand ordered set of transforms may be stored as an unfolding datastructure 310.

The decompression transform block is configured to receive at its firstinput the set of encoded image items I_(E) for the compressed imagedata. The set of encoded image items may be retrieved from a memory(e.g. memory 304) or from another memory block (not shown). Aninput/output (I/O) interface of the decompression transform block iscoupled to an I/O interface of the memory. The decompression transformblock 302 and the memory 304 may be coupled together via a bus to allowbi-directional data transfer therebetween. An output interface of thedecompression transform block is configured to output the decoded imagedata items that are generated from the set of encoded image itemsreceived at its input. The set of decoded image data items are denotedI_(DE).

Although the memory 304 is shown as forming part of the decompressor300, this is for the purpose of illustration only. The memory 304 may bean external memory accessed by the decompressor unit to decompress imagedata. It may be an external memory accessed by the GPU, for example. Theexternal memory may be accessed via a cache in order to lower externalbandwidth and/or decrease average latency.

The operation of the decompressor 300 to decompress compressed imagedata will now be described with reference to FIG. 7. The operation ofthe decompressor will be described with reference to a single encodedimage data item only. This is for the purposes of illustration, and itwill be appreciated that the following steps may be applied to each ofthe encoded image data items (in order to decode an entire image), or toa subset of encoded image data items in order to decode a portion, orsub-region, of the image. In some examples the decompressor may decode asingle image data item and decode that item independently of the otherimage data items.

At step 701 the decompression transform block 302 receives a set of oneor more encoded image items that encode data for an image. The data setmay include encoded data for an entire image. In other examples, thedata set may include encoded data for a sub-region of the image (i.e.the set may only include a subset of encoded image values for an image).The set may include only a single encoded image data item. As describedabove, the decompression transform block may load the data to be decodedfrom memory (e.g. memory 304 or an external memory).

At step 703, the decompression transform 302 block uses the encodedimage data item to apply the sequence of transforms identified by thatencoded item to a reference data item to thereby transform the referencedata item to a decoded image data item.

A schematic illustration of this process is shown in FIG. 8. Here, anencoded image data item 802 is being used to apply a sequence oftransforms from an ordered set of transforms 804 to a reference dataitem. The ordered set of transforms comprises n transforms. Thereference data item is selected from a set of one or more referenceitems 806, e.g. based on information associated with the encoded item,as described below. The ordered set of transforms 804 and the set ofreference items may be stored together as a data structure 808.

If there is more than one reference data item in the set 806, theencoded data item may contain an indexing data unit to index one of thereference data items from the set. In this case, the decompressiontransform block 302 receives the encoded data item 802 and uses theinformation contained in the indexing data unit to select a referencedata item from the predetermined set 806. That is, the indexing unit maybe used to index a vector quantization codebook. Continuing our previousexample described with reference to FIGS. 4-6, the set of reference dataitems A′-F′ specify reference values 602, 604, 606 and 608. The indexingdata unit may contain a binary string to index a particular referenceitem from the predetermined set. For example, if there are fourreference items in the predetermined set, a binary string of 2 bits maybe sufficient to index any one of the reference items.

The decompression transform block may use the indexing unit to selectthe reference data item directly from its stored location in memory.Alternatively, it may load the data structure 808 into local memoryprior to decoding the set of encoded data items. The latter approach mayincrease the demands of the local memory of the decompressor but mayimprove memory bandwidth compared to the former approach as data may notneed to be repeatedly loaded from an external memory. Alternatively, alocal cache may be used to load portions of the data structure ondemand.

If the compacted region of colour space is represented by a singlereference value only, the encoded data item may not contain an indexingdata unit. In this case the decompression transform receives the encodeddata item but does not need to select a reference value as there is onlya single reference value in the set 806.

The transform block 302 then processes the series of data units 1 to n(denoted at 810) to apply a sequence of transforms from the ordered setof transforms to the selected reference item. This process isillustrated generally at 814. In particular, each data unit of theseries 810 contains information indicating the selective application ofa corresponding transform of the ordered set of transforms. For example,data unit 1 contains information that indicates whether transform 1 isto be applied or not; data unit 2 contains information that indicateswhether transform 2 is to be applied or not, and so on. Alternatively,each data unit may contain information corresponding to the selectiveapplication of one transform from a corresponding pair of transformsfrom the ordered set. That is, data unit 1 may indicate which transformfrom a first pair of transforms is to be applied; data unit 2 mayindicate which transform from a second pair of transforms is to beapplied, and so on. Each data unit may comprise a single bit thatindicates either that a corresponding transform is to be applied or not,or that indicates which of a corresponding pair of transforms is to beapplied. For example, the transform block 302 may be configured to applya transform if the corresponding data unit contains a ‘1’, and to notapply the transform if the corresponding data unit contains a ‘0’. If itis determined that a corresponding transform is not to be applied, thetransform block may simply forward the data to the next transform, or itmay apply an identity matrix so that the values in the tuple remainunchanged. It can be seen from these examples how each encoded data itemcontains information that represents the selective application of eachtransform from the ordered set of transforms to thereby identify thesequence of transforms for that encoded data item.

The transform block may additionally apply one or more transformsirrespective of the series of data units in the encoded data item. Thesetransforms may be applied at fixed positions of the sequence for everydata item being decoded. For example, transforms may be applied toreduce correlation between colour channels. Such transform(s) may beapplied at fixed positions of the sequence for each data item.

Because these transforms may be applied independently of the set of dataitems to be decoded, they may not require a corresponding data unit inthe encoded data item. Thus in some examples the number of decompressiontransforms in the sequence may exceed the number of data units in theencoded data item. Because such transforms would be applied for all dataitems in the set to be decoded, the sequence of transforms to decodeeach encoded image data item would still in effect be identified fromthe series of data units in the encoded data item.

In the above schemes individual bit flags have been used to indicateeither i) to apply a given transform or not to apply it or ii) thechoice of which one of a pair of transforms to apply. In somesituations, an alternative encoding method, one in which a non-power oftwo set of choices, e.g, N=3 or 5, may be selected, at certain steps.Such a selection may choose between N different transforms or,alternatively, N−1 transforms and the option of not to transform. Thisapproach may be more effective than the binary approach for cases, forexample, where there are, say, 3 (or a multiple thereof) distinctclusters. The encoding of these selections, however, is slightly moreinvolved but could be achieved, say, by using modulus operations on theencoding. In general, if there is a choice between N differenttransforms at each stage of ‘n’ stages of the sequence, the number ofbits required to encode the identification of the sequence of isceiling(log₂(N^(n))) bits.

Once the sequence of transforms identified by the encoded data item 802has been applied to the reference data item, the reference item istransformed to a decoded image data item 812. This process may bereferred to as colour unfolding because the set of encoded data itemsencode how to unfold (via their respective sequences) the region ofcolour space quantized by the set of reference data items to the regionof colour space spanned by the decoded image data.

As described above, because the set of reference items 806 might onlyrepresent a quantized version of the compacted region of colour spaceformed during the compression stage, a given encoded image data item maynot decode exactly to the image data item that was encoded to producethat encoded item. This class of compression is commonly referred to as‘lossy’. Specifically, during the compression of the image data, eachimage data item specifying an initial position in colour space (e.g.position 518A) may be encoded as an identified sequence of transformsthat reverses the transforms applied to that image data item during thecolour space folding. Under such a scheme, each image data item isencoded on the implicit assumption that the identified sequence oftransforms are applied to its respective corresponding transformed dataitem following the colour space folding (e.g. that the identifiedsequence of transforms for image data item A are applied to thetransformed data item located at point 518A″ in colour space). However,during decoding the sequence of transforms represented by an encodeddata item are applied to a predetermined reference item (e.g.representing position 608). If the reference item does not represent thesame point in colour space as the transformed image data item (e.g. ifposition 608 is not the same position in colour space as position518A″), then the decoded data item generated from an encoded item maynot represent exactly the same position in colour space as the originalimage data item encoded by that encoded item. However, depending on theextent of the colour folding during the compression stage, and/or thelevel of quantization of the folded region, a decoded image data itemmay nevertheless specify a position in colour space that corresponds tothe position in colour space encoded by the encoded value. A decodedimage data item could for example specify the same position in colourspace as the original image data item that was encoded, or it mayspecify a similar position in colour space (e.g. the decoded data itemspecifies a position in colour space in the vicinity of that for theoriginal image data item).

At step 705 it is determined whether there are any further encoded dataitems in the set that have not been decoded. If there are, then step 703is repeated for the next encoded data item in the set. If there are nofurther encoded data items to decode (i.e. a decoded data item has beengenerated for each encoded data item in the set I_(E), or the subset ofI_(E) that is to be decoded), then at step 707 the set of decoded imagedata items are stored as decompressed image data. The decompressed imagedata may be stored in memory 304, in some external memory accessible bythe GPU, or treated as transient, or intermediate, data that isdelivered to another unit for further process. Step 705 may be performedprior to step 707 (as described here), or alternatively a decoded dataitem may be stored before a subsequent encoded data item is decoded(i.e. step 707 occurs prior to step 705). At step 709 the process ends.

If more than one image data item is to be decoded, then step 703 isrepeated. If step 703 is to be performed multiple times to decode agiven data set, then each cycle may be performed sequentially (asdescribed in this example), in parallel (i.e. two or more encoded dataitems are decoded in parallel), or a combination of both.

It follows from the examples above that each decoded image data item maybe in the form of a tuple. It may be in the same format as the dataitems in the image data I_(D) that were compressed by the image datacompressor 100. For example, if each original image data item (prior tocompression) contained colour values in the form of an n-tuple, thedecoded image data items may also contain colour values in the form ofan n-tuple. In other words the set of decoded image data itemsrepresents image data that is the same as, or closely matches, the imagedata I_(D) that was compressed.

The methods of compressing and decompressing image data described aboveenable image data comprising a set of image data items (e.g. vectors) tobe stored in a compressed format. The approaches described herein mayhave particular benefits when applied to texture data (i.e. when theimage data I_(D) is texture data). In such an application, each imagedata item in the texture data may represent one or more colour valuesassociated with a respective block of one or more texels of the texture.The set of such data items in the data I_(D) may represent the colourdata for a particular texture.

One feature of texture data that may make it suitable for thecompression (and decompression) techniques described herein is therelatively restricted region of colour space populated by most textures.If the populated region of colour space is relatively restricted, orlocalised, then a series of compacting transforms may more readily befound that can compact the region of colour space occupied by that data(compared, for example, to a less defined or more dispersed occupiedregion of colour space). In addition, it has been realised that a numberof different textures may have similar distributions within colour spaceand so a single unfolding structure may be shared by different textures(potentially leading to greater memory savings if a library of texturesare to be compressed). The image data I_(D) may comprise or beassociated with an address that references the unfolding structure (e.g.in memory). This may enable different sets of compressed image data toreference the same unfolding structure in the event those sets of datarepresent textures having similar distributions in colour space.

Some existing schemes for storing compressed texture data are torepresent the data as a plurality of words, say 64-bit, of data eachassociated with a respective region of texels which may benon-overlapping blocks (e.g. a 4×4 block, 8×4 block or 8×8 block oftexels to give some examples), or be overlapping regions, (e.g. 9×9regions repeated at 4×4 intervals). Each word stores a pair of colourvalues associated with the respective texel region and, for the case ofnon-overlapping blocks those colour values can then be modulated todetermine per-texel colours that lie between the two colour values. Forthe overlapping case, the per-texel colours may use more complexcombinations of the pairs of colours and neighbouring pairs. As anexample, it may be possible to encode a pair of colours within a 64-bitword in 30 or 31 bits, leaving the remaining bits to define theper-texel colour modulation data. However, using the compression anddecompression methods described herein, it has been found it is possibleto encode, with relatively little loss in precision, each pair of RGBαcolour values for an example data set which were originally representedin a 5554 bit format (i.e. 19 bits per colour value; 38 bits per colourvalue pair) using only 14 bits (if we ignore the overhead fortransforms, etc.), so that per 64-bit word 14 bits are required toencode the colour values. This offers a potential bit-saving of 16 or 17bits per 64-bit word compared to the existing approaches. The releasedbits may be used to, for example, improve the accuracy of the colourmodulation data. Pairs of colour values may be stored in as little as 14bits because it has been calculated that for certain textures, anordered set of 11 transforms can give sufficient accuracy in thecompression and decompression of the texture data, and thus each pair ofcolour values can be encoded in 11 bits (the remaining 3 bits may beused to index the reference value to which the transforms are to beapplied, and/or to specify the nature of the pairs of colour values thatare encoded). It has further been calculated that a data structurecomprising an ordered set of 11 transforms and a set of four referencevalues may be stored in approximately 850 bits. This is possible withthe use of a restricted set of transforms (e.g. rotations, scaling,scaling and/or translations), as described above. Thus the compressionand decompression methods described herein may offer an improvement inmemory requirements for storing texture data compared to existingtexture compression schemes that require 30 bits per 64-bit word forstoring colour data when a texture comprises more than approximately850/16≈53 blocks of 4×4 texels.

The approaches described herein may also be applied to colour data inwhich each image data item represents one or more colour valuesassociated with a respective block of one or more pixels of an image.Due to their relatively restricted, or limited, distribution of valuesin colour space, grey-scale images are an example class of images thatmay benefit from the compression methods described herein.

An illustration of the compression (and subsequent decompression) ofimage values is described herein with reference to FIGS. 4 to 6, inwhich the series compression transforms and derived set of decompressiontransforms each consisted of two transforms. It will be appreciated thatthe number of transforms was chosen as two merely to aid illustration,and that in practice any suitable number of transforms may be applied tocompress and decompress the image data. A greater number of transformsmay enable the occupied region of colour space to be more tightlyfolded, which may lead to more accurate results when the image data isdecompressed (by virtue of a given sized set of reference values beingable to more accurately quantize the folded region of colour space).

The transforms used to compress and decompress the image data may befrom a predetermined set. The set may be predetermined in the sense thatit is the complete library of transforms capable of being accessed, orimplemented, by the decompressor. Although the transforms illustratedherein were limited to reflections, it will be appreciated that othertransforms may form part of the compacting series of transforms used inthe data compression and/or the ordered set of transforms used for datadecompression. These transformations may include, but are not limitedto, translations, rotations, scaling operations and skew transforms. Atransform may combine more than one operation such as scaling and thentranslating the data. Scaling the data may be useful for altering theprofile/shape of the envelope of the occupied region in colour space soas to better enable one part of the occupied region to be folded ontoanother part of the occupied region. In other words scaling the data maybe useful for improving the symmetry of the occupied region of colourspace to enable it to be more tightly folded. The skew transform may beused to take advantage of correlation between different channels of thedata. This may be done to reverse the effects of the decorrelationtransforms applied to the data during compression. A rotary transformmay cause a point in value space to be rotated about a centre ofrotation. It will be appreciated that these transforms are merely anillustration of the types of transform that may be used to fold andunfold the value space and that other types of transform may also beused.

There may be a trade-off between the number of types of transformsapplied during compression and the computational cost and complexity ofperforming the compression. The number of types of transformation mayalso have an impact on the amount of data required for eachtransformation. For example, a more diverse set of transformation typesmay require more storage than a more restricted set. Applying a greaternumber of types of transforms during compression may result in a morecompacted region of colour space (particularly if the compressor has afree choice of transform at each step of the compression), but at therisk of additional computational complexity. To reduce the complexity ofthe compression process, the compressor may be configured to use apredetermined sequence of transform types (i.e. be limited to apredetermined set of transform types). In this case, the compressor mayonly need to determine the parameters of each transform in the sequenceduring compression.

In the examples illustrated herein, the occupied regions of colour spaceare single continuous regions (e.g. regions 406 and 516). It will beappreciated that the techniques described herein are equally applicableto image data that, prior to compression, occupies a region in valuespace that is discontinuous and comprises two or more distinctsub-regions (for example as shown in FIG. 9). For example, a texture orimage may be made from different shades of two predominantly distinctcolours. In this case, transforms may be applied during compression thatfold one sub-region onto another sub-region.

FIG. 10 shows a computer system 1000 in which the graphics processingsystems described herein (the image compressor and image decompressor)may be implemented. The computer system comprises a CPU 1002, a GPU1004, a memory 1008 and other devices 1014, such as a display 1016,speakers 1018 and a camera 1006. A processing block 1010 is implementedon the GPU 1004. In other examples, the processing block 1010 may beimplemented on the CPU 1002. The components of the computer system cancommunicate with each other via a communications bus 1020. A store 1012is implemented as part of the memory 1008.

The image data compressor and image data decompressor of FIGS. 1 and 3are shown as comprising a number of functional blocks. This is schematiconly and is not intended to define a strict division between differentlogic elements of such entities. Each functional block may be providedin any suitable manner. It is to be understood that intermediate valuesdescribed herein as being formed by compressor/decompressor need not bephysically generated by the compressor/decompressor at any point and maymerely represent logical values which conveniently describe theprocessing performed by the compressor/decompressor between its inputand output.

Although the examples described above have referred to the compressionand decompression of image data, it will be appreciated by anyoneskilled in the art of vector quantization, that these techniques mayalso be applicable to any data that can be VQ compressed. This caninclude, for example, audio data, 3D position data from laser-scanned orsynthetic models, MRI data, or measurements of properties of othernatural phenomena.

The image data compressors and decompressors described herein may beembodied in hardware on an integrated circuit. The image datacompressors and decompressors described herein may be configured toperform any of the methods described herein. Generally, any of thefunctions, methods, techniques or components described above can beimplemented in software, firmware, hardware (e.g., fixed logiccircuitry), or any combination thereof. The terms “module,”“functionality,” “component”, “element”, “unit”, “block” and “logic” maybe used herein to generally represent software, firmware, hardware, orany combination thereof. In the case of a software implementation, themodule, functionality, component, element, unit, block or logicrepresents program code that performs the specified tasks when executedon a processor. The algorithms and methods described herein could beperformed by one or more processors executing code that causes theprocessor(s) to perform the algorithms/methods. Examples of acomputer-readable storage medium include a random-access memory (RAM),read-only memory (ROM), an optical disc, flash memory, hard disk memory,and other memory devices that may use magnetic, optical, and othertechniques to store instructions or other data and that can be accessedby a machine.

The terms computer program code and computer readable instructions asused herein refer to any kind of executable code for processors,including code expressed in a machine language, an interpreted languageor a scripting language. Executable code includes binary code, machinecode, bytecode, code defining an integrated circuit (such as a hardwaredescription language or netlist), and code expressed in a programminglanguage code such as C, Java or OpenCL. Executable code may be, forexample, any kind of software, firmware, script, module or librarywhich, when suitably executed, processed, interpreted, compiled,executed at a virtual machine or other software environment, cause aprocessor of the computer system at which the executable code issupported to perform the tasks specified by the code.

A processor, computer, or computer system may be any kind of device,machine or dedicated circuit, or collection or portion thereof, withprocessing capability such that it can execute instructions. A processormay be any kind of general purpose or dedicated processor, such as aCPU, GPU, System-on-chip, state machine, media processor, anapplication-specific integrated circuit (ASIC), a programmable logicarray, a field-programmable gate array (FPGA), or the like. A computeror computer system may comprise one or more processors.

It is also intended to encompass software which defines a configurationof hardware as described herein, such as HDL (hardware descriptionlanguage) software, as is used for designing integrated circuits, or forconfiguring programmable chips, to carry out desired functions. That is,there may be provided a computer readable storage medium having encodedthereon computer readable program code in the form of an integratedcircuit definition dataset that when processed in an integrated circuitmanufacturing system configures the system to manufacture a compressorand/or decompressor configured to perform any of the methods describedherein, or to manufacture a compressor and/or decompressor comprisingany apparatus described herein. An integrated circuit definition datasetmay be, for example, an integrated circuit description.

Therefore, there may be provided a method of manufacturing, at anintegrated circuit manufacturing system, an image data compressor and/ordecompressor as described herein. Furthermore, there may be provided anintegrated circuit definition dataset that, when processed in anintegrated circuit manufacturing system, causes the method ofmanufacturing an image data compressor and/or decompressor to beperformed.

An integrated circuit definition dataset may be in the form of computercode, for example as a netlist, code for configuring a programmablechip, as a hardware description language defining an integrated circuitat any level, including as register transfer level (RTL) code, ashigh-level circuit representations such as Verilog or VHDL, and aslow-level circuit representations such as OASIS (RTM) and GDSII. Higherlevel representations which logically define an integrated circuit (suchas RTL) may be processed at a computer system configured for generatinga manufacturing definition of an integrated circuit in the context of asoftware environment comprising definitions of circuit elements andrules for combining those elements in order to generate themanufacturing definition of an integrated circuit so defined by therepresentation. As is typically the case with software executing at acomputer system so as to define a machine, one or more intermediate usersteps (e.g. providing commands, variables etc.) may be required in orderfor a computer system configured for generating a manufacturingdefinition of an integrated circuit to execute code defining anintegrated circuit so as to generate the manufacturing definition ofthat integrated circuit.

An example of processing an integrated circuit definition dataset at anintegrated circuit manufacturing system so as to configure the system tomanufacture a compressor and/or decompressor will now be described withrespect to FIG. 11.

FIG. 11 shows an example of an integrated circuit (IC) manufacturingsystem 1102 which comprises a layout processing system 1104 and anintegrated circuit generation system 1106. The IC manufacturing system1102 is configured to receive an IC definition dataset (e.g. defining acompressor and/or decompressor as described in any of the examplesherein), process the IC definition dataset, and generate an IC accordingto the IC definition dataset (e.g. which embodies a compressor and/ordecompressor as described in any of the examples herein). The processingof the IC definition dataset configures the IC manufacturing system 1102to manufacture an integrated circuit embodying a compressor and/ordecompressor as described in any of the examples herein.

The layout processing system 1104 is configured to receive and processthe IC definition dataset to determine a circuit layout. Methods ofdetermining a circuit layout from an IC definition dataset are known inthe art, and for example may involve synthesising RTL code to determinea gate level representation of a circuit to be generated, e.g. in termsof logical components (e.g. NAND, NOR, AND, OR, MUX and FLIP-FLOPcomponents). A circuit layout can be determined from the gate levelrepresentation of the circuit by determining positional information forthe logical components. This may be done automatically or with userinvolvement in order to optimise the circuit layout. When the layoutprocessing system 1104 has determined the circuit layout it may output acircuit layout definition to the IC generation system 1106. A circuitlayout definition may be, for example, a circuit layout description.

The IC generation system 1106 generates an IC according to the circuitlayout definition, as is known in the art. For example, the ICgeneration system 1106 may implement a semiconductor device fabricationprocess to generate the IC, which may involve a multiple-step sequenceof photo lithographic and chemical processing steps during whichelectronic circuits are gradually created on a wafer made ofsemiconducting material. The circuit layout definition may be in theform of a mask which can be used in a lithographic process forgenerating an IC according to the circuit definition. Alternatively, thecircuit layout definition provided to the IC generation system 1106 maybe in the form of computer-readable code which the IC generation system1106 can use to form a suitable mask for use in generating an IC.

The different processes performed by the IC manufacturing system 1102may be implemented all in one location, e.g. by one party.Alternatively, the IC manufacturing system 1102 may be a distributedsystem such that some of the processes may be performed at differentlocations, and may be performed by different parties. For example, someof the stages of: (i) synthesising RTL code representing the ICdefinition dataset to form a gate level representation of a circuit tobe generated, (ii) generating a circuit layout based on the gate levelrepresentation, (iii) forming a mask in accordance with the circuitlayout, and (iv) fabricating an integrated circuit using the mask, maybe performed in different locations and/or by different parties.

In other examples, processing of the integrated circuit definitiondataset at an integrated circuit manufacturing system may configure thesystem to manufacture a compressor and/or decompressor without the ICdefinition dataset being processed so as to determine a circuit layout.For instance, an integrated circuit definition dataset may define theconfiguration of a reconfigurable processor, such as an FPGA, and theprocessing of that dataset may configure an IC manufacturing system togenerate a reconfigurable processor having that defined configuration(e.g. by loading configuration data to the FPGA).

In some embodiments, an integrated circuit manufacturing definitiondataset, when processed in an integrated circuit manufacturing system,may cause an integrated circuit manufacturing system to generate adevice as described herein. For example, the configuration of anintegrated circuit manufacturing system in the manner described abovewith respect to FIG. 11 by an integrated circuit manufacturingdefinition dataset may cause a device as described herein to bemanufactured.

In some examples, an integrated circuit definition dataset could includesoftware which runs on hardware defined at the dataset or in combinationwith hardware defined at the dataset. In the example shown in FIG. 11,the IC generation system may further be configured by an integratedcircuit definition dataset to, on manufacturing an integrated circuit,load firmware onto that integrated circuit in accordance with programcode defined at the integrated circuit definition dataset or otherwiseprovide program code with the integrated circuit for use with theintegrated circuit.

The applicant hereby discloses in isolation each individual featuredescribed herein and any combination of two or more such features, tothe extent that such features or combinations are capable of beingcarried out based on the present specification as a whole in the lightof the common general knowledge of a person skilled in the art,irrespective of whether such features or combinations of features solveany problems disclosed herein. In view of the foregoing description itwill be evident to a person skilled in the art that variousmodifications may be made within the scope of the invention.

The invention claimed is:
 1. An image data compressor configured tocompress image data comprising a set of image data items eachrepresenting a position in value space so as to define an occupiedregion thereof, the compressor comprising: a compression transform blockconfigured to selectively apply a series of compression transforms tosubsets of the image data items to generate a transformed set of imagedata items occupying a compacted region of value space; a quantizationunit configured to identify a set of one or more reference data itemsthat quantizes the compacted region in value space; an encoding blockconfigured to, for each image data item in the set of image data items:identify a sequence of decompression transforms from a fixed set ofdecompression transforms that generates an approximation of that imagedata item when applied to a selected one of the set of one or morereference data items; and encode the image data item as a representationof the identified sequence of decompression transforms for that imagedata item; and a memory configured to store the encoded image dataitems, set of reference data items and the fixed set of decompressiontransforms as compressed image data.
 2. An image data decompressorconfigured to decompress compressed image data comprising an item ofencoded image data encoding a position in image-value space, and a setof one or more reference data items, the encoded image data itemidentifying a sequence of transforms from a predetermined set oftransforms, the decompressor comprising: a decompression transform blockconfigured to use the encoded image data item to apply the sequence oftransforms identified by that encoded image data item to a referencedata item selected from the set of one or more reference data items tothereby transform the reference data item to a decoded image data item.3. An image data decompressor as claimed in claim 2, wherein the imagedata item is an n-tuple.
 4. An image data decompressor as claimed inclaim 2, wherein the image-value space is a colour space.
 5. An imagedata decompressor as claimed in claim 4, wherein the encoded image dataitem encodes an n-tuple specifying a position in the colour space.
 6. Animage data decompressor as claimed in claim 5, wherein the decoded imagedata item specifies a position in colour space corresponding to theposition in colour space encoded by the encoded image data item used bythe decompression transform block to generate that decoded image dataitem.
 7. An image data decompressor as claimed in claim 4, wherein eachof the one or more reference data items represents a position in thecolour space.
 8. An image data decompressor as claimed in claim 7,wherein the decompression transform block is configured to use theencoded image data item to apply the sequence of transforms identifiedby that encoded data item to said reference data item to therebytransform that reference data item to a position in colour spacecorresponding to the position in colour space encoded by that encodedimage data item.
 9. An image data decompressor as claimed in claim 4,wherein each position in colour space specifies one or more colourvalues.
 10. An image data decompressor as claimed in claim 5, whereinthe image data is texture data and the image data item represents one ormore colour values associated with a block of one or more texels.
 11. Animage data decompressor as claimed in claim 2, wherein the decompressiontransform block loads the set of one or more reference data items andthe set of predetermined transforms from a memory.
 12. An image datadecompressor as claimed in claim 2, wherein the decompression transformblock interprets information contained in the encoded image data item toselect said reference data item from the set of one or more referencedata items.
 13. An image data decompressor as claimed in claim 2,wherein the decompression transform block is configured to interpretinformation contained in that encoded data item representing theselective application of each transform from the predetermined set oftransforms to thereby identify the sequence of transforms to be appliedto the selected reference data item.
 14. An image data decompressor asclaimed in claim 13, wherein the information is in the form of a seriesof data units, each data unit representing the selective application ofa corresponding transform from the predetermined set of transforms. 15.An image data decompressor as claimed in claim 2, wherein thedecompression transform block is configured to output the decoded imagedata item in a format that occupies a greater number of bits than itscorresponding encoded image data item.
 16. An image data decompressor asclaimed in claim 2, wherein the compressed image data comprises aplurality of encoded image data items, and the decompression transformblock is further configured to, for each encoded image data item, usethe encoded image data item to apply the sequence of transformsidentified by that encoded image data item to one of the reference dataitems selected from the set of one or more reference data items tothereby transform the reference data item to a decoded image data item.17. An image data decompressor as claimed in claim 16, wherein thedecompression transform block is configured to use each encoded imagedata item to generate a corresponding decoded image data item.
 18. Theimage data compressor as claimed in claim 1, wherein the image datacompressor is embodied in hardware on an integrated circuit.
 19. Theimage data decompressor as claimed in claim 2, wherein the image datadecompressor is embodied in hardware on an integrated circuit.
 20. Anon-transitory computer readable storage medium having stored thereon acomputer readable description of an integrated circuit that, whenprocessed in an integrated circuit manufacturing system, causes theintegrated circuit manufacturing system to manufacture an image datadecompressor configured to decompress compressed image data comprisingan item of encoded image data encoding a position in image-value space,and a set of one or more reference data items, the encoded image dataitem identifying a sequence of transforms from a predetermined set oftransforms, the decompressor comprising: a decompression transform blockconfigured to use the encoded image data item to apply the sequence oftransforms identified by that encoded image data item to a referencedata item selected from the set of one or more reference data items tothereby transform the reference data item to a decoded image data item.